The present invention relates generally to computer systems and more particularly, to sensor-based computing systems.
Increasingly, computers are used to interact with the physical world, often through the implementation of various sensors in communication with a computer. Many types of sensors have been implemented in this manner. For instance, sensors often have been used in the performance of experiments in the physical sciences, including chemistry and physics experiments, where temperature, pressure, location and/or motion sensors have been used to allow researchers to understand the physical and/or chemical processes occurring during the experiments. Similarly, in both industry and academia, a variety of more traditional sensors, such as mass/weight sensors (e.g., scales and balances), among others, have been used for a variety of purposes. More recently, other types of sensors have been used to automate previously labor-intensive operations; for example, a location sensor (such as a Global Positioning System (“GPS”) sensor) can be used in place of a sextant, compass, etc. to assist in navigation, pathfinding, etc. Moreover, sensors (such as radio frequency identification (“RFID”) sensors have begun to find use in inventory tracking systems, asset identification systems, and the like.
Generally, however, such sensors are implemented in a fairly centralized fashion. That is to say, the sensors themselves are distributed to the necessary locations but are often used only to acquire data, which then is transmitted back to a central computer (or set of computers) for data collection, analysis and/or storage. As the use of sensors becomes ever more widespread, the overhead (which can include, inter alia, both communications overhead and server workload) can become a limiting factor in the applications and/or scaling of such systems. Merely by way of example, those skilled in the art will appreciate that sophisticated sensors are often used in high-energy and/or particle physics experiments to record data about, for example, the disposition of particles of interest during the experiment. Often, there are many such sensors, each collecting a high volume of data, which is then transmitted to a computer for processing and/or analysis. Often, much of the data is not of interest to the experiment and is consequently discarded by the computer. In the interim, however, all of the data generally must be transmitted to the computer and stored (even if only temporarily) before a determination can be made that the data is not of interest, because the sensors themselves have no ability to process or filter the data before transmission.
Similarly, in a large inventory management system, thousands or millions of products each may comprise (or have affixed thereto) an RFID transmitter, and the system may comprise hundreds (or thousands) of sensors collecting data from such transmitters, data which can be used to track the inventory during manufacturing, storage, distribution, etc. Generally, however, these sensors are designed to acquire particular information and forward all of the acquired information to a central computer system for analysis. Consequently, as described above, the sensors have little or no ability to filter the acquired data, to adjust for the type of data to be acquired, etc.
Hence, there is a need in the art for more robust sensing and computing systems.